home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 5 / BBS in a Box -Volume V (BBS in a Box) (April 1992).iso / Files / Prog / M / LSC213.cpt / SlotMgr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-09-26  |  4.1 KB  |  247 lines  |  [TEXT/KAHL]

  1.  
  2. /*
  3.  *  SlotMgr.h
  4.  *
  5.  *  Copyright (c) 1986, 1987 THINK Technologies, Inc.
  6.  *  These interfaces are based on information copyrighted
  7.  *  by Apple Computer, Inc., 1985, 1986, 1987.
  8.  *
  9.  */
  10.  
  11. #ifndef _SlotMgr_
  12. #define _SlotMgr_
  13.  
  14. #ifndef _MacTypes_
  15. #include "MacTypes.h"
  16. #endif
  17.  
  18. #ifndef _OSUtil_
  19. #include "OSUtil.h"
  20. #endif
  21.  
  22.  
  23.                 /* StatusFlags constants */
  24. #define fCardIsChanged    1
  25. #define fCkForSame        0
  26. #define fCkForNext        1
  27. #define fWarmStart        2
  28.  
  29.                 /* State constants */
  30. enum {
  31.     stateNil,
  32.     stateSDMInit,
  33.     statePRAMInit,
  34.     statePInit,
  35.     stateSInit
  36. };
  37.  
  38.  
  39.                 /* DCE extension for slots */
  40.                 
  41. typedef struct AuxDCE {
  42.     Ptr                dCtlDriver;                /*  original DCE  */
  43.     short            dCtlFlags;
  44.     QHdr            dCtlQHdr;
  45.     long            dCtlPosition;
  46.     Handle            dCtlStorage;
  47.     short            dCtlRefNum;
  48.     long            dCtlCurTicks;
  49.     struct GrafPort    *dCtlWindow;
  50.     short            dCtlDelay;
  51.     short            dCtlEMask;
  52.     short            dCtlMenu;
  53.     unsigned char    dCtlSlot;                /*  new fields  */
  54.     unsigned char    dCtlSlotId;
  55.     long            dCtlDevBase;
  56.     Ptr                dCtlOwner;
  57.     unsigned char    dCtlExtDev;
  58.     unsigned char    fillByte;
  59. } AuxDCE,*AuxDCEPtr,**AuxDCEHandle;
  60.  
  61.  
  62.                 /*  PBs for opening slot devices  */
  63.  
  64. typedef struct SlotDevParam {
  65.     struct QElem    *qLink;
  66.     short            qType;
  67.     short            ioTrap;
  68.     Ptr                ioCmdAddr;
  69.     ProcPtr            ioCompletion;
  70.     OsErr            ioResult;
  71.     StringPtr        ioNamePtr;
  72.     short            ioVRefNum;
  73.     short            ioRefNum;
  74.     char            ioVersNum;
  75.     char            ioPermssn;
  76.     Ptr                ioMix;
  77.     short            ioFlags;
  78.     char            ioSlot;
  79.     char            ioID;
  80. } SlotDevParam;
  81.  
  82.  
  83. typedef struct MultiDevParam {
  84.     struct QElem    *qLink;
  85.     short            qType;
  86.     short            ioTrap;
  87.     Ptr                ioCmdAddr;
  88.     ProcPtr            ioCompletion;
  89.     OsErr            ioResult;
  90.     StringPtr        ioNamePtr;
  91.     short            ioVRefNum;
  92.     short            ioRefNum;
  93.     char            ioVersNum;
  94.     char            ioPermssn;
  95.     Ptr                ioMix;
  96.     short            ioFlags;
  97.     Ptr                ioSEBlkPtr;
  98. } MultiDevParam;
  99.  
  100.  
  101.                 /* Device Manager Slot Support */
  102.  
  103. typedef struct SlotIntQElement{
  104.     Ptr                sqLink;
  105.     short            sqType;
  106.     short            sqPrio;
  107.     ProcPtr            sqAddr;
  108.     long            sqParm;
  109. } SlotIntQElement, *SQElemPtr;
  110.                   
  111.  
  112.                 /* Slot Declaration Manager */
  113.  
  114. typedef struct SpBlock{
  115.     long            spResult;
  116.     Ptr                spsPointer;
  117.     long            spSize;
  118.     long            spOffsetData;
  119.     Ptr                spIOFileName;
  120.     Ptr                spsExecPBlk;
  121.     Ptr                spStackPtr;
  122.     long            spMisc;
  123.     long            spReserved;
  124.     short            spIOReserved;
  125.     short            spRefNum;
  126.     short            spCategory;
  127.     short            spCType;
  128.     short            spDrvrSW;
  129.     short            spDrvrHW;
  130.     char            spTBMask;
  131.     char              spSlot;
  132.     char            spID;
  133.     char            spExtDev;
  134.     char            spHwDev;
  135.     char            spByteLanes;
  136.     char            spFlags;
  137.     char            spKey;
  138. } SpBlock, *SpBlockPtr;
  139.  
  140. typedef struct SInfoRecord{
  141.     Ptr                siDirPtr;
  142.     short            siInitStatusA;
  143.     short            siInitStatusV;
  144.     char            siState;
  145.     char            siCPUByteLanes;
  146.     char            siTopOfROM;
  147.     char            siStatusFlags;
  148.     short            siTOConst;
  149.     char            siReserved[2];
  150. } SInfoRecord, *SInfoRecPtr;
  151.  
  152.  
  153. typedef struct SDMRecord{
  154.     ProcPtr            sdBEVSave;
  155.     ProcPtr            sdBusErrProc;
  156.     ProcPtr            sdErrorEntry;
  157.     long            sdReserved;
  158. } SDMRecord;
  159.               
  160.  
  161. typedef struct FHeaderRec{
  162.     long            fhDirOffset;
  163.     long            fhLength;
  164.     long            fhCRC;
  165.     char            fhROMRev;
  166.     char            fhFormat;
  167.     long            fhTstPat;
  168.     short            fhReserved;
  169.     char            fhByteLanes;
  170. } FHeaderRec, *FHeaderRecPtr;
  171.  
  172.  
  173. typedef struct SEBlock{
  174.     char            seSlot;
  175.     char            sesRsrcId;
  176.     short            seStatus;
  177.     char            seFlags;
  178.     char            seFiller0;
  179.     char            seFiller1;
  180.     char            seFiller2;
  181.     long            seResult;
  182.     long            seIOFileName;
  183.     char            seDevice;
  184.     char            sePartition;
  185.     char            seOSType;
  186.     char            seReserved;
  187.     char            seRefNum;
  188.     char            seNumDevices;
  189.     char            seBootState;
  190. } SEBlock;
  191.  
  192.     
  193. /*  error codes  */
  194.  
  195. enum {
  196.     slotNumErr = -360,
  197.     smRecNotFnd = -351,
  198.     smSRTOvrFlErr,
  199.     smNoGoodOpens,
  200.     smOffsetErr,
  201.     smByteLanesErr,
  202.     smBadsPtrErr,
  203.     smsGetDrvrErr,
  204.     smNoMoresRsrcs,
  205.     smDisDrvrNamErr,
  206.     smGetDrvrNamErr,
  207.     smCkStatusErr,
  208.     smBlkMoveErr,
  209.     smNewPErr,
  210.     smSelOOBErr,
  211.     smSlotOOBErr,
  212.     smNilsBlockErr,
  213.     smsPointerNil,
  214.     smCPUErr,
  215.     smCodeRevErr,
  216.     smReservedErr,
  217.     smBadsList,
  218.     smBadRefId,
  219.     smBusErrTO = -320,
  220.     smBadBoardId,
  221.     smNoJmpTbl,
  222.     smIntTblVErr,
  223.     smIntStatVErr,
  224.     smNoBoardId,
  225.     smGetPRErr,
  226.     smNoBoardsRsrc,
  227.     smDisposePErr,
  228.     smFHBlkDispErr,
  229.     smFHBlockRdErr,
  230.     smBLFieldBad,
  231.     smUnExBusErr,
  232.     smResrvErr,
  233.     smNosInfoArray,
  234.     smLWTstBad,
  235.     smNoDir,
  236.     smRevisionErr,
  237.     smFormatErr,
  238.     smCRCFail,
  239.     smEmptySlot,
  240.     smPriInitErr = -293,
  241.     smPRAMInitErr,
  242.     smSRTInitErr,
  243.     smSDMInitErr
  244. };
  245.  
  246.  
  247. #endif _SlotMgr_